perm filename LENGTH.PRF[S79,JMC] blob sn#430499 filedate 1979-04-07 generic text, type T, neo UTF8
*****EVAL length qNIL=0 BY SEXPSS∪PROPSS∪{ LENGTH_DF};

1 length qNIL=0  

*****EVAL ∀uu.length uu=add1 length cdr uu BY SEXPSS∪PROPSS∪{ LENGTH_DF};

2 ∀uu.length uu=add1 length cdr uu  

*****LABEL I_LENUV;

*****∧I LISTINDUCTION;

3 (∀v.length (qNIL*v)=(length qNIL+length v)∧∀uu.(∀v.length (cdr uu*v)=(length cdr uu+length v)⊃∀v.length (uu*v)%
=(length uu+length v)))⊃∀u v.length (u*v)=(length u+length v)  

*****LABEL NIL_LENUV;

*****EVAL ∀v.length (qNIL*v)=(length qNIL+length v) BY ARITHSS∪{ APPEND_NIL,LENGTH_NIL};

4 ∀v.length (qNIL*v)=(length qNIL+length v)  

*****LABEL H_LENUV;

*****ASSUME ∀v.length (cdr uu*v)=(length cdr uu+length v);

5 ∀v.length (cdr uu*v)=(length cdr uu+length v)  (5)

*****REWRITE ∀v.length (uu*v)=(length uu+length v) BY ARITHSS∪SEXPSS∪{ LENGTH_UU,APPEND_UU_V,H_LENUV};

6 ∀v.length (uu*v)=(length uu+length v)  (5)

*****⊃I H_LENUV⊃↑;

7 ∀v.length (cdr uu*v)=(length cdr uu+length v)⊃∀v.length (uu*v)=(length uu+length v)  

*****∀I ↑ uu;

8 ∀uu.(∀v.length (cdr uu*v)=(length cdr uu+length v)⊃∀v.length (uu*v)=(length uu+length v))  

*****TAUT ∀u v.length (u*v)=(length u+length v) I_LENUV:NIL_LENUV,8;

9 ∀u v.length (u*v)=(length u+length v)  

*****LABEL I_LENREV;

*****∧I LISTINDUCTION;

10 (length reverse1 qNIL=length qNIL∧∀uu.(length reverse1 cdr uu=length cdr uu⊃length reverse1 uu=length uu))⊃∀u%
.length reverse1 u=length u  

*****LABEL NIL_LENREV;

*****EVAL length reverse1 qNIL=length qNIL BY { REVERSE1_NIL,LENGTH_NIL};

11 length reverse1 qNIL=length qNIL  

*****LABEL H_LENREV;

*****ASSUME length reverse1 cdr uu=length cdr uu;

12 length reverse1 cdr uu=length cdr uu  (12)

*****REWRITE length reverse1 uu=length uu BY SEXPSS∪ARITHSS∪{ LENGTH_UU,LENGTH_NIL,LENGTH_UV,REVERSE1_UU,H_LENRE%
V};

13 length reverse1 uu=length uu  (12)

*****⊃I H_LENREV⊃↑;

14 length reverse1 cdr uu=length cdr uu⊃length reverse1 uu=length uu  

*****∀I ↑ uu;

15 ∀uu.(length reverse1 cdr uu=length cdr uu⊃length reverse1 uu=length uu)  

*****TAUT ∀u.length reverse1 u=length u I_LENREV:NIL_LENREV,15;

16 ∀u.length reverse1 u=length u  

*****REWRITE ∀uu.¬(length uu=0) BY LOGICTREE∪{ LENGTH_UU,ADD1_NOT_ZERO};

17 ∀uu.¬(length uu=0)  

*****∀E ↑ u;

18 NELIST u⊃¬(length u=0)  

*****REWRITE ↑ BY SEXPSS;

19 ¬(u=qNIL)⊃¬(length u=0)  

*****ASSUME u=qNIL;

20 u=qNIL  (20)

*****REWRITE length u BY { LENGTH_NIL,20};

21 length u=0  (20)

*****⊃I ↑↑⊃↑;

22 u=qNIL⊃length u=0  

*****TAUT length u=0≡u=qNIL 19,22;

23 length u=0≡u=qNIL  

*****∧I ALL_U;

24 ((length qNIL=0≡qNIL=qNIL)∧∀uu.(length uu=0≡uu=qNIL))⊃∀u.(length u=0≡u=qNIL)  

*****REWRITE length qNIL=0≡qNIL=qNIL BY LOGICTREE∪{ LENGTH_NIL};

25 length qNIL=0≡qNIL=qNIL  

*****REWRITE ∀uu.(length uu=0≡uu=qNIL) BY SEXPSS∪{ LENGTH_UU,ADD1_NOT_ZERO};

26 ∀uu.(length uu=0≡uu=qNIL)  

*****TAUT ∀u.(length u=0≡u=qNIL) 24:26;

27 ∀u.(length u=0≡u=qNIL)